package com.ruoyi.ring.service;

import com.ruoyi.ring.domain.UserPhysiology;
import com.ruoyi.ring.domain.dto.PhysiologyInfoQueryDTO;
import com.ruoyi.ring.domain.dto.PhysiologyTaskQueryDTO;
import com.ruoyi.ring.domain.vo.UserPhysiologyVO;

import java.util.List;

/**
 * 生理期信息Service接口
 * 
 * @author liuwp
 * @date 2025-09-30
 */
public interface IUserPhysiologyService 
{
    /**
     * 查询生理期信息
     * 
     * @param id 生理期信息主键
     * @return 生理期信息
     */
    public UserPhysiology selectUserPhysiologyById(Long id);

    /**
     * 查询生理期信息列表
     * 
     * @param userPhysiology 生理期信息
     * @return 生理期信息集合
     */
    public List<UserPhysiology> selectUserPhysiologyList(UserPhysiology userPhysiology);

    /**
     * 根据业务主键查询一条记录：生理期信息
     *
     * @param userPhysiology 生理期信息
     * @return 生理期信息
     */
    public UserPhysiology selectOneUserPhysiology(UserPhysiology userPhysiology);

    /**
     * 新增生理期信息
     * 
     * @param userPhysiology 生理期信息
     * @return 结果
     */
    public int insertUserPhysiology(UserPhysiology userPhysiology);

    /**
     * 修改生理期信息
     * 
     * @param userPhysiology 生理期信息
     * @return 结果
     */
    public int updateUserPhysiology(UserPhysiology userPhysiology);

    /**
     * 修改生理期信息
     *
     * @param userPhysiology 生理期信息
     * @param userPhysiology 生理期信息条件
     * @return 结果
     */
    public int updateUserPhysiologyCondition(UserPhysiology userPhysiology, UserPhysiology userPhysiologyCondition);

    /**
     * 批量删除生理期信息
     * 
     * @param ids 需要删除的生理期信息主键集合
     * @return 结果
     */
    public int deleteUserPhysiologyByIds(Long[] ids);

    /**
     * 删除生理期信息信息
     * 
     * @param id 生理期信息主键
     * @return 结果
     */
    public int deleteUserPhysiologyById(Long id);

    /**
     * 条件删除生理期信息
     *
     * @param userPhysiology 生理期信息
     * @return 结果
     */
    public int deleteUserPhysiologyByCondition(UserPhysiology userPhysiology);

    /**
     * 获取生理期信息详细信息 - APP
     */
    UserPhysiologyVO queryPhysiologyInfo(PhysiologyInfoQueryDTO queryDTO);

    /**
     * 获取生理期信息详细信息 - APP
     */
    UserPhysiologyVO queryPhysiologyTaskInfo(PhysiologyTaskQueryDTO taskQueryDTO);


    UserPhysiology queryOneUserPhysiology();

    UserPhysiology queryOnePhysiologyInfo(PhysiologyInfoQueryDTO queryDTO);
}
